home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-08-10 | 24.5 KB | 610 lines | [TEXT/MPS ] |
- (*
- File: fp.mod
-
- Copyright: © 1994-1995 by Apple Computer, Inc.
- All rights reserved.
-
- Version: Universal Pascal, March 29, 1995
-
- Note: The following file was hand converted from fp.h
- See fp.h for more information and comments.
- *)
-
-
- (*$TAGS-*)
- (*$CALLING PASCAL*)
- MODULE fp;
-
- IMPORT SYSTEM, Types;
-
- TYPE
- Double* = REAL; (*ΔΔ NEW*)
- Single* = LONGINT; (*ΔΔ NEW*)
- CONST
- DOUBLE_SIZE* = 8;
-
- (*$IF GENERATINGPOWERPC *)
- LONG_DOUBLE_SIZE* = 16;
- DECIMAL_DIG* = 17; (* does not exist for double-double *)
- (*$ELSE*)
- DECIMAL_DIG* = 21;
- (*$IF GENERATING68881*)
- LONG_DOUBLE_SIZE* = 12;
- (*$ELSE*)
- LONG_DOUBLE_SIZE* = 10;
- (*$END*)
- (*$END*)
-
- (*******************************************************************************
- * Trigonometric functions *
- *******************************************************************************)
-
-
- (*•• PROCEDURE cos*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE sin*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE tan*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (*•• PROCEDURE acos*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*) (* result is in [0,pi] *)
- (*•• PROCEDURE asin*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*) (* result is in [-pi/2,pi/2] *)
- (*•• PROCEDURE atan*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*) (* result is in [-pi/2,pi/2] *)
-
- (* atan2 computes the arc tangent of y/x in [-pi,pi] using the sign of
- both arguments to determine the quadrant of the computed value. *)
- (*•• PROCEDURE atan2*(y: Types.double_t; x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
-
- (*******************************************************************************
- * Hyperbolic functions *
- *******************************************************************************)
-
- (*•• PROCEDURE cosh*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE sinh*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE tanh*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE acosh*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE asinh*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE atanh*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (*******************************************************************************
- * Exponential functions *
- *******************************************************************************)
-
- (*•• PROCEDURE exp*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* expm1 computes the base e exponential of the argument minus 1,
- i. e., exp(x) - 1. For small enough arguments, expm1 is expected
- to be more accurate than the straight forward computation of exp(x) - 1.*)
- (*•• PROCEDURE expm1*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* exp2 computes the base 2 exponential. *)
- (*•• PROCEDURE exp2*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE frexp*(x: Types.double_t; VAR exponent: LONGINT): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE ldexp*(x: Types.double_t; n: LONGINT): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE log*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* log2 computes the base 2 logarithm. *)
- (*•• PROCEDURE log2*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* log1p computes the base e logorithm of 1 plus the argument,
- i. e., log (1 x). For small enough arguments, log1p is expected
- to be more accurate than the straightforward computation of log (1+x). *)
- (*•• PROCEDURE log1p*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE log10*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* logb extracts the exponent of its argument, as a signed integral
- value. A subnormal argument is treated as though it were first
- normalized. Thus
-
- 1 <= x 2POINTER TO ( - Logb ( x ) ) < 2 *)
- (*•• PROCEDURE logb*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE modf*(x: Double; VAR iptr: Double): Double; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- PROCEDURE modff*(x: Single; VAR iptrf: Single): Single; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (* scalb computes x 2POINTER TO n efficently. This is not normally done by
- computing 2POINTER TO n explicitly. *)
- (*•• PROCEDURE scalb*(x: Types.double_t; n: LONGINT): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (*******************************************************************************
- * Power and absolute value functions *
- *******************************************************************************)
-
- (*•• PROCEDURE fabs*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* hypot computes the square root of the sum of the squares of its
- arguments, without undue overflow or underflow. *)
- (*•• PROCEDURE hypot*(x: Types.double_t; y: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE pow*(x: Types.double_t; y: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE sqrt*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (*******************************************************************************
- * Gamma and Error functions *
- *******************************************************************************)
-
- (*•• PROCEDURE erf*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE erfc*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*) (* complementary error function *)
-
- (*•• PROCEDURE gamma*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* lgamma computes the base-e logarithm of the absolute value of
- gamma of its argument x, for x > 0. *)
- (*•• PROCEDURE lgamma*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (*******************************************************************************
- * Nearest integer functions *
- *******************************************************************************)
-
- (*•• PROCEDURE ceil*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE floor*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* the rint function rounds its argument to an integral value in floating
- point format, honoring the current rounding direction. *)
- (*•• PROCEDURE rint*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* nearbyint differs from rint only in that it does not raise the
- inexact exception. It is the nearbyint function recommended by the
- IEEE floating-point standard 854. *)
- (*•• PROCEDURE nearbyint*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* the function rinttol rounds its argument to the nearest long using
- the current rounding direction.
- >>Note that if the rounded value is outside the range of long, then
- the result is undefined. *)
- (*•• PROCEDURE rinttol*(x: Types.double_t): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* the round function rounds the argument to the nearest integral value
- in double format similar to the Fortran "anint" function. That is:
- add half to the magnitude and chop. *)
- (*•• PROCEDURE round*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* roundtol is similar to the Fortran function nint or to the Pascal round
- >>Note that if the rounded value is outside the range of long, then
- the result is undefined. *)
- (*•• PROCEDURE roundtol*(round: Types.double_t): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* trunc computes the integral value, in floating format, nearest to
- but no larger in magnitude than its argument. *)
- (*•• PROCEDURE trunc*(x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (*******************************************************************************
- * Remainder functions *
- *******************************************************************************)
-
- (*•• PROCEDURE fmod*(x: Types.double_t; y: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* the following two functions compute the remainder. remainder is required
- by the IEEE 754 floating point standard. The second form correponds to the
- SANE remainder; it stores into 'quotient' the 7 low-order bits of the
- integer quotient x/y, such that -127 <= quotient <= 127. *)
- (*•• PROCEDURE remainder*(x: Types.double_t; y: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE remquo*(x: Types.double_t; y: Types.double_t; VAR quo: LONGINT): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
-
- (*******************************************************************************
- * Auxiliary functions *
- *******************************************************************************)
-
- (*•• PROCEDURE copysign*(x: Types.double_t; y: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- PROCEDURE nan*(tagp: Types.ConstCStringPtr): Double; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE nanf*(tagp: Types.ConstCStringPtr): Single; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (*•• PROCEDURE nextafterd*(x: Double; y: Double): Double; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- PROCEDURE nextafterf*(x: Single; y: Single): Single; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (*******************************************************************************
- * Max, Min and Positive Difference *
- *******************************************************************************)
-
- (* These extension functions correspond to the standard functions, dim
- max and min.
-
- The fdim function determines the 'positive difference' between its
- arguments: ( x - y, if x > y ), ( +0, if x <= y ). If one argument is
- NaN, then fdim returns that NaN. if both arguments are NaNs, then fdim
- returns the first argument. *)
- (*•• PROCEDURE fdim*(x: Types.double_t; y: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* max and min return the maximum and minimum of their two arguments,
- respectively. They correspond to the max and min functions in FORTRAN.
- NaN arguments are treated as missing data. If one argument is NaN and
- the other is a number, then the number is returned. If both are NaNs
- then the first argument is returned. *)
- (*•• PROCEDURE fmax*(x: Types.double_t; y: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE fmin*(x: Types.double_t; y: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (*******************************************************************************
- * Inquiry functions *
- *******************************************************************************)
-
- CONST
- FP_SNAN* = 0; (* signaling NaN *)
- FP_QNAN* = 1; (* quiet NaN *)
- FP_INFINITE* = 2; (* + or - infinity *)
- FP_ZERO* = 3; (* + or - zero *)
- FP_NORMAL* = 4; (* all normal numbers *)
- FP_SUBNORMA* = 5; (* denormal numbers *)
-
-
- (*•• PROCEDURE __fpclassifyd*(x: Double): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- PROCEDURE __fpclassifyf*(x: Single): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (*•• PROCEDURE __isnormald*(x: Double) : LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- PROCEDURE __isnormalf*(x: Single): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (*•• PROCEDURE __isfinited*(x: Double): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- PROCEDURE __isfinitef*(x: Single): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (*•• PROCEDURE __isnand*(x: Double): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- PROCEDURE __isnanf*(x: Single): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (*•• PROCEDURE __signbitd*(x: Double): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- PROCEDURE __signbitf*(x: Single): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (*•• PROCEDURE __inf*(): Double;
- EXTERNAL PASCAL;*)
-
-
- (*******************************************************************************
- * Non NCEG extensions *
- *******************************************************************************)
-
-
- (*$IF UNDEFINED __NOEXTENSIONS__ *)
-
- (*******************************************************************************
- * Financial functions *
- *******************************************************************************)
-
- (* compound computes the compound interest factor "(1 + rate) POINTER TO periods"
- more accurately than the straightforward computation with the Power
- function. This is SANE's compound function. *)
- (*•• PROCEDURE compound*(rate: Types.double_t; periods: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (* The function annuity computes the present value factor for an annuity
- "( 1 - ( 1 + rate ) POINTER TO ( - periods ) ) / rate" more accurately than the
- straightforward computation with the Power function. This is SANE's
- annuity function. *)
- (*•• PROCEDURE annuity*(rate: Types.double_t; periods: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (*******************************************************************************
- * Random function *
- *******************************************************************************)
-
- (*•• PROCEDURE randomx*(VAR x: Types.double_t): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
-
- (*******************************************************************************
- * Relational operator *
- *******************************************************************************)
-
- TYPE
- relop* = INTEGER; (* relational operator *)
-
- CONST
- GREATERTHAN* = 0;
- LESSTHAN* = 1;
- EQUALTO* = 2;
- UNORDERED* = 3;
-
-
- (*•• PROCEDURE relation*(x: Types.double_t; y: Types.double_t): relop; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
-
-
- (*******************************************************************************
- * Binary to decimal conversions *
- *******************************************************************************)
-
- CONST
- (*$IF GENERATINGPOWERPC *)
- SIGDIGLEN* = 36; (* significant decimal digits *)
- (*$ELSE*)
- SIGDIGLEN* = 20; (* significant decimal digits *)
- (*$END*)
- DECSTROUTLEN* = 80; (* max length for dec2str output *)
-
- TYPE
- (*ΔΔ DecimalKind* = (FloatDecimal,FixedDecimal);*)
- DecimalKind* = SHORTINT;
- CONST
- FloatDecimal* = 0; FixedDecimal* = 1;
- TYPE
-
- (* The decimal record type provides an intermediate unpacked form for
- programmers who wish to do their own parsing of numeric input or
- formatting of numeric output. *)
-
- (* $ALIGN MAC68K*)
- Decimal* = RECORD
- sgn*: SHORTINT (*ΔΔ 0..1*); (* sign 0 for +, 1 for - *)
- exp*: INTEGER;
- sig*: ARRAY SIGDIGLEN OF CHAR (*ΔΔ STRING[SIGDIGLEN]*);
- END;
- (* $ALIGN RESET*)
-
- (* Each conversion to a decimal string is controlled by a decform
- structure. The style is either FLOATDECIMAL or FIXEDDECIMAL defined
- above. The value of digits is the number of significant digits for
- FLOATDECIMAL. The value of digits for FIXEDDECIMAL is the number of
- digits to the right of the decimal point. *)
-
- (* $ALIGN MAC68K*)
- Decform* = RECORD
- style*: DecimalKind;
- digits*: INTEGER;
- END;
- (* $ALIGN RESET*)
-
- (* Each conversion to a decimal record d via the function call num2dec is
- controlled by a decform record f (defined earlier), to a Types.double_t x. *)
- (*•• PROCEDURE num2dec*((*CONST*)VAR f: Decform; x: Types.double_t; VAR d: Decimal); (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
-
- (* dec2num converts a decimal record d to a Types.double_t value. *)
- PROCEDURE dec2num*((*CONST*)VAR d: Decimal): Types.double_t; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (* The MathLib formatter dec2str is controlled by a decform f. Input d is
- a decimal record. *)
- PROCEDURE dec2str*((*CONST*)VAR f: Decform; (*CONST*)VAR d: Decimal; s: Types.CStringPtr); (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (* The function str2dec is the MathLib scanner. *)
- PROCEDURE str2dec*(s: Types.ConstCStringPtr; VAR ix: INTEGER; VAR d: Decimal; VAR vp: INTEGER); (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (*$IF GENERATING68K *)
- (* dec2d is similar to dec2num except a double is returned on 68k platforms *)
- PROCEDURE dec2d*((*CONST*)VAR d: Decimal): Double; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- (*$END*)
-
- (* dec2f is similar to dec2num except a float is returned. *)
- PROCEDURE dec2f*((*CONST*)VAR d: Decimal): Single; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (* dec2s is similar to dec2num except a short is returned. *)
- PROCEDURE dec2s*((*CONST*)VAR d: Decimal): INTEGER; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (* dec2l is similar to dec2num except a long is returned. *)
- PROCEDURE dec2l*((*CONST*)VAR d: Decimal): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (*******************************************************************************
- * 68k-only Transfer Function Prototypes *
- *******************************************************************************)
-
- (*$IF GENERATING68K *)
-
- (*•• PROCEDURE x96tox80*((*CONST*)VAR x96: Types.Extended96; VAR x80: Types.Extended80); (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
- (*•• PROCEDURE x80tox96*((*CONST*)VAR x80: Types.Extended80; VAR x96: Types.Extended96); (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);*)
-
- (*$END*) (* GENERATING68K *)
-
-
- (*$END*) (*__NOEXTENSIONS__*)
-
- (*******************************************************************************
- * PowerPC-only Function Prototypes *
- *******************************************************************************)
-
- (*$IF GENERATINGPOWERPC *)
- PROCEDURE cosl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE sinl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE tanl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- PROCEDURE acosl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE asinl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE atanl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE atan2l*(y: LongDouble; x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- PROCEDURE coshl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE sinhl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE tanhl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- PROCEDURE acoshl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE asinhl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE atanhl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- PROCEDURE expl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE expm1l*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE exp2l*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- PROCEDURE frexpl*(x: LongDouble; VAR exponent: LONGINT): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE ldexpl*(x: LongDouble; n: LONGINT): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- PROCEDURE logl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE log1pl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE log10l*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE log2l*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- PROCEDURE logbl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE scalbl*(x: LongDouble; n: LONGINT): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- PROCEDURE fabsl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE hypotl*(x: LongDouble; y: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE powl*(x: LongDouble; y: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE sqrtl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- PROCEDURE erfl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE erfcl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE gammal*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE lgammal*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- PROCEDURE ceill*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE floorl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE rintl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE nearbyintl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE rinttoll*(x: LongDouble): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE roundl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE roundtoll*(round: LongDouble): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE truncl*(x: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE remainderl*(x: LongDouble; y: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE remquol*(x: LongDouble; y: LongDouble; VAR quo: LONGINT): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE copysignl*(x: LongDouble; y: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE fdiml*(x: LongDouble; y: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE fmaxl*(x: LongDouble; y: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE fminl*(x: LongDouble; y: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- PROCEDURE modfl*(x: LongDouble; VAR iptrl: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE nanl*(tagp: ConstCStringPtr): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE nextafterl*(x: LongDouble; y: LongDouble): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE __fpclassify*(x: LongDouble): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE __isnormal*(x: LongDouble): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE __isfinite*(x: LongDouble): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE __isnan*(x: LongDouble): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE __signbit*(x: LongDouble): LONGINT; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (*$IF UNDEFINED __NOEXTENSIONS__ *)
- PROCEDURE relationl*(x: LongDouble; y: LongDouble): relop; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE x80told*(x80: Extended80; VAR x: LongDouble); (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE ldtox80*(x: LongDouble; VAR x80: Extended80); (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- (* MathLib v2 has two new transfer functions: x80tod and dtox80. They can
- be used to directly transform 68k 80-bit extended data types to double
- and back for PowerPC based machines without using the functions
- x80told or ldtox80. Double rounding may occur.
- *)
- PROCEDURE x80tod*((*CONST*)VAR x80: Extended80): Double; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE dtox80*((*CONST*)VAR x: Double; VAR x80: Extended80); (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
-
- PROCEDURE num2decl*((*CONST*)VAR f: Decform; x: LongDouble; VAR d: Decimal); (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- PROCEDURE dec2numl*((*CONST*)VAR d: Decimal): LongDouble; (*ΔΔC;ΔΔ*)
- EXTERNAL (*•• C*);
- (*$END*) (* __NOEXTENSIONS__ *)
-
- (*$END*) (* GENERATINGPOWERPC *)
-
-
-
- END fp.
-